package hadoop;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;

import java.io.IOException;
import java.net.URI;

public class

HadoopUtil {

    //  上传
    public  String hadoopUpload(String srcPath ,String destPath) throws IOException{
        String url = "hdfs://172.20.10.11:9000";
        Configuration conf = new Configuration();
        FileSystem fileSystem = FileSystem.get(URI.create(url),conf);

        //案例3： 上传本地文件到hdfs

        // 本地的 文件
        Path srcLoc =new Path(srcPath);
        // hdfs 的路径
        Path destLoc = new Path(destPath);
        // 使用 hadoop 的 copyFromLocalFile
        fileSystem.copyFromLocalFile(srcLoc,destLoc);

        return "上传成功";
    }
     // 读文件
     public String hadoopRead(String filePath)throws IOException {

        // 用api的形式 读取下我们刚才写的文件
         String reaUrl = "hdfs://172.20.10.11:9000/"+ filePath;
         // 加载hdfs 的配置
         Configuration conf = new Configuration();
         // 建立hdfs连接
         FileSystem fileSystem = FileSystem.get(URI.create(reaUrl),conf);  //URI.create(reaUrl),conf)
         // 打开url路径的文件
         FSDataInputStream fsDataInputStream = fileSystem.open(new Path(reaUrl));
         // 输出 文件内容，并关闭输入流
         IOUtils.copyBytes(fsDataInputStream, System.out,4096,false);

         return "读取成功";
     }

    // 下载
    public String hadoopDownload(String srcPath)throws IOException {

        return "";
    }


}
